# Python set
'''
Python 也包含有 集合 类型。集合是由不重复元素组成的无序的集。
它的基本用法包括成员检测和消除重复元素。集合对象也支持像 联合，交集，差集，对称差分等数学运算
'''
set1 = {'hello', 'hello', 'word', 'word'}
# 创建空集合
# empty_set = set()
#
# print(type(empty_set))

# s = set(('hello', 'world'))
# print(s)

s = set(('hello', 'world'))
# print(s)

# 向集合 s 中添加元素 随机添加
# s.add('!')
# print('添加元素后的集合是：%s' % s)

# 添加列表
# s.update([1,3], [2,4])

# 添加元祖
# s.update(('h', 'j'))
# print('添加元素后的集合是：%s' % s)

# 将元素 2 从集合中移除
# s.remove('h')
# print('移除元素 2 后的集合是：%s' % s)
# s.discard( x ) 移除集合中的元素，且如果元素不存在，不会发生错误
# s.pop() 随机删除  注意：在交互模式，pop 是删除集合的第一个元素（排序后的集合的第一个元素）。

# 如果移除集合中不存在的元素会报异常
# 移除集合中不存在的集合
# s.remove('hi')
# print('移除元素后的集合是：%s' % s)

# 清空
# s.clear()
# print(s)

# 集合运算
'''
'-’：代表前者中包含后者中不包含的元素
‘|’：代表两者中全部元素聚在一起去重后的结果
‘&’：两者中都包含的元素
‘^’：不同时包含于两个集合中的元素
'''
# 集合推导式
# 判断元素是否存在
# a = {x for x in 'abracadabra' if x not in 'abc'}
# print(a)
# difference() 方法用于返回集合的差集，即返回的集合元素包含在第一个集合中，但不包含在第二个集合(方法的参数)中

# difference_update() 方法用于移除两个集合中都存在的元素。
# difference_update() 方法与 difference() 方法的区别在于 difference() 方法返回一个移除相同元素的新集合，而 difference_update() 方法是直接在原来的集合中移除元素，没有返回值。

# intersection() 方法用于返回两个或更多集合中都包含的元素，即交集，返回一个新的集合
# intersection_update() 方法用于获取两个或更多集合中都重叠的元素，即计算交集。
# intersection_update() 方法不同于 intersection() 方法，因为 intersection() 方法是返回一个新的集合，而 intersection_update() 方法是在原始的集合上移除不重叠的元素。

# union() 方法返回两个集合的并集，即包含了所有集合的元素，重复的元素只会出现一次，返回值返回一个新的集合

# isdisjoint() 方法用于判断两个集合是否包含相同的元素，==如果没有返回 True，否则返回 False。==
# x = {"apple", "banana", "cherry"}
# y = {"google", "runoob", "apple"}
#　判断集合 y 中是否包含集合 x 中的元素，如果没有返回 True, 有则返回 False
# z = x.isdisjoint(y)
# 结果返回 False,说明集合 y 中有和 x 中相同的元素
# print(z)

# x = {"apple", "banana", "cherry"}
# y = {"google", "runoob", "baidu"}
#　判断集合 y 中是否包含集合 x 中的元素，如果没有返回 True, 有则返回 False
# z = x.isdisjoint(y)
# 结果返回 True,说明集合 y 中没有和 x 中相同的元素
# print(z)

'''
issubset() 方法用于判断集合的所有元素是否都包含在指定集合中，如果是则返回 True，否则返回 False。
必须是集合中的元素都包含在内，否则结果为 False
'''

'''
issuperset() 方法用于判断指定集合的所有元素是否都包含在原始的集合中，如果是则返回 True，否则返回 False。
'''

'''
symmetric_difference() 方法返回两个集合中不重复的元素集合，即会移除两个集合中都存在的元素，结果返回一个新的集合
'''

# symmetric_difference_update() 方法移除当前集合中在另外一个指定集合相同的元素，并将另外一个指定集合中不同的元素插入到当前集合中
# 还有dd() clear() copy() update() pop() remove() discard() 等方法